#ifndef SUDOKUMETHODTYPE_H
#define SUDOKUMETHODTYPE_H

/**
  * Possible types of inserted cell value
  */
//TODO use QFlags
enum CellFillerTypes
{
    /**
      * Mask for unknown filler
      */
    Unknown = 0,
    /**
      * Empty cell
      */
    Empty = 1 << 0,
    /**
      * Cell filled by user.
      * Solving algorithms treat user filled cells as certain.
      */
    User = 1 << 1,
    /**
      * Cell value was known from the beginning
      */
    Given = 1 << 2,
    /**
      * Not sure if value is correct
      */
    Guess = 1 << 3,
    /**
      * Inserted by findNakedSingles()
      * Other names: Forced Digit, Sole Candidate
      */
    NakedSingles = 1 << 4,
    /**
      * Inserted by findHiddenSingles() from rows, cols and boxes
      * Other names: Pinned Digit.
      */
    HiddenSingles = 1 << 5,
    /**
      * Inserted by findLockedCandidatesPointing()
      * Other names: Intersection Removal, Line-Box Interaction
      */
    LockedCandidatesPointing = 1 << 6,
    /**
      * Inserted by findLockedCandidatesClaiming()
      */
    LockedCandidatesClaiming = 1 << 7,
    /**
      * Inserted by findNakedSubsets()
      */
    NakedSubsets = 1 << 8,
    /**
      * Inserted by findHiddenSubsets()
      */
    HiddenSubsets = 1 << 9,
    /**
      * Inserted by xWing()
      */
    Xwing = 1 << 10,

    Swordfish = 1 << 11,

    Jellyfish = 1 << 12,
    /**
      * Inserted simple elimination after value for cell is found
      */
    Elimination = 1 << 13,
    /**
      * Mask for all types
      */
    MaskAll = 0xffffff
};

#endif // SUDOKUMETHODTYPE_H
